<?php

use Yaf\Registry;
use models\Business\Oauth;

class OauthController extends ApiBaseController
{
    /**
     * @SWG\Post(
     *     path="/v3/oauth/login",
     *     tags={"会员接口"},
     *     summary="会员第三方登陆接口",
     *     description="
     * type 必须参数 1为微博,2为微信,3为QQ,4为淘宝
     * open_id 必须参数 第三方登陆后获取用户信息接口返回的open_id
     * union_id 非必须参数 第三方登陆后获取用户信息接口返回的union_id
     * nickname 必须参数 昵称
     * avatar 必须参数 头像
     * country 非必须参数 国家
     * province 非必须参数 省份
     * city 非必须参数 城市
     * sex 非必须参数 性别
     * access_token 非必须参数 淘宝登录时必须
     * expired_at 非必须参数 淘宝登录时必须，取淘宝用户信息接口返回的w1_valid字段的值",
     *     @SWG\Parameter(
     *          name="secret",
     *          description="加密字符串",
     *          in="formData",
     *          required=true,
     *          type="string"
     *     ),
     *     @SWG\Response(
     *         response="200",
     *         description="请求成功",
     *         @SWG\Schema(type="object", ref="#/definitions/memberSingleData")
     *     ),
     *     @SWG\Response(
     *         response="401",
     *         description="签名不存在或无效签名"
     *     )
     * )
     */
    public function loginAction() {
        $parameters = Registry::get('parameters');

        $member = Oauth::login($parameters);

        return $this->_responseJson(['data' => $member]);
    }

    /**
     * @SWG\Put(
     *     path="/v3/oauth/{id}/bind",
     *     tags={"会员接口"},
     *     summary="第三方登陆会员绑定手机号码",
     *     description="
     * mobile 必须参数 要绑定的手机号码
     * code 必须参数 短信验证码
     * password 必须参数 登陆密码
     * type 必须参数 登陆接口返回的type",
     *     @SWG\Parameter(
     *          name="Authorization",
     *          description="Authorization 登录接口返回的jwt字段的值",
     *          in="header",
     *          required=true,
     *          type="string"
     *     ),
     *     @SWG\Parameter(
     *          name="id",
     *          description="登陆接口返回的id字段的值",
     *          in="path",
     *          required=true,
     *          type="string"
     *     ),
     *     @SWG\Parameter(
     *          name="secret",
     *          description="加密字符串",
     *          in="formData",
     *          required=true,
     *          type="string"
     *     ),
     *     @SWG\Response(
     *         response="200",
     *         description="请求成功",
     *         @SWG\Schema(type="object", ref="#/definitions/memberSingleData")
     *     ),
     *     @SWG\Response(
     *         response="422",
     *         description="编辑失败"
     *     ),
     *     @SWG\Response(
     *         response="400",
     *         description="签名不存在或无效签名"
     *     ),
     *     @SWG\Response(
     *         response="401",
     *         description="jwt无效或过期，需要登录"
     *     ),
     *     @SWG\Response(
     *         response="403",
     *         description="无权访问"
     *     ),
     *     @SWG\Response(
     *         response="404",
     *         description="找不到数据"
     *     )
     * )
     */
    public function bindAction() {
        $parameters = Registry::get('parameters');

        Oauth::BindMobile($parameters);

        return $this->_responseJson(new stdClass(), '000', '绑定成功');
    }

    /**
     * 解绑其他第三方账号 现阶段需求没有提及，先预留接口
     */
    public function unbindAction() {

    }

    /**
     * @SWG\Put(
     *     path="/v3/oauth/{id}/bindoauth",
     *     tags={"会员接口"},
     *     summary="绑定过手机的会员绑定第三方登陆",
     *     description="
     * type 必须参数 1为微博,2为微信,3为QQ,4为淘宝
     * open_id 必须参数 第三方登陆后获取用户信息接口返回的open_id
     * union_id 非必须参数 第三方登陆后获取用户信息接口返回的union_id
     * nickname 必须参数 昵称
     * avatar 必须参数 头像
     * country 非必须参数 国家
     * province 非必须参数 省份
     * city 非必须参数 城市
     * sex 非必须参数 性别
     * access_token 非必须参数 淘宝登录时必须
     * expired_at 非必须参数 淘宝登录时必须，取淘宝用户信息接口返回的w1_valid字段的值",
     *     @SWG\Parameter(
     *          name="Authorization",
     *          description="Authorization 登录接口返回的jwt字段的值",
     *          in="header",
     *          required=true,
     *          type="string"
     *     ),
     *     @SWG\Parameter(
     *          name="id",
     *          description="登陆接口返回的id字段的值",
     *          in="path",
     *          required=true,
     *          type="string"
     *     ),
     *     @SWG\Parameter(
     *          name="secret",
     *          description="加密字符串",
     *          in="formData",
     *          required=true,
     *          type="string"
     *     ),
     *     @SWG\Response(
     *         response="200",
     *         description="请求成功",
     *         @SWG\Schema(type="object", ref="#/definitions/memberSingleData")
     *     ),
     *     @SWG\Response(
     *         response="422",
     *         description="编辑失败"
     *     ),
     *     @SWG\Response(
     *         response="400",
     *         description="签名不存在或无效签名"
     *     ),
     *     @SWG\Response(
     *         response="401",
     *         description="jwt无效或过期，需要登录"
     *     ),
     *     @SWG\Response(
     *         response="403",
     *         description="无权访问"
     *     ),
     *     @SWG\Response(
     *         response="404",
     *         description="找不到数据"
     *     )
     * )
     */
    public function bindOauthAction() {
        $parameter = Registry::get('parameters');

        Oauth::bindOauth($parameter);

        return $this->_responseJson(new stdClass(), '000', '第三方账号绑定成功');
    }

    /**
     * @SWG\Put(
     *     path="/v3/oauth/list",
     *     tags={"会员接口"},
     *     summary="获取会员所有第三方账号列表接口",
     *     description="
     * page 必须参数 页码
     * page_size 必须参数 每页显示条数
     * sort 必须参数 排序方式 可选值:desc降序、asc生序
     * order 必须参数 排序字段 可选值 id排序",
     *     @SWG\Parameter(
     *          name="Authorization",
     *          description="Authorization 登录接口返回的jwt字段的值",
     *          in="header",
     *          required=true,
     *          type="string"
     *     ),
     *     @SWG\Parameter(
     *          name="secret",
     *          description="加密字符串",
     *          in="formData",
     *          required=true,
     *          type="string"
     *     ),
     *     @SWG\Response(
     *         response="200",
     *         description="请求成功",
     *         @SWG\Schema(type="object", ref="#/definitions/memberSingleData")
     *     ),
     *     @SWG\Response(
     *         response="422",
     *         description="编辑失败"
     *     ),
     *     @SWG\Response(
     *         response="400",
     *         description="签名不存在或无效签名"
     *     ),
     *     @SWG\Response(
     *         response="401",
     *         description="jwt无效或过期，需要登录"
     *     ),
     *     @SWG\Response(
     *         response="403",
     *         description="无权访问"
     *     ),
     *     @SWG\Response(
     *         response="404",
     *         description="找不到数据"
     *     )
     * )
     */
    public function oauthListAction() {
        $parameters = Registry::get('parameters');

        $oauth_list = Oauth::getOauthList($parameters);
        return $this->_responseJson($oauth_list);
    }

}
